/**
 * 
 */
package mm.front.utils.validations;

import java.util.Calendar;
import java.util.GregorianCalendar;

import mm.back.filtros.ReporteVentasFiltro;
import mm.front.jsf.JSFUtils;

/**
 * @author PUSDERKIS
 *
 */
public class FiltroResumenVentasValidator {
	
	public static boolean validar(ReporteVentasFiltro rv){
		
		if (rv == null){
			JSFUtils.addErrorMessage("Ocurrio un error al recuperar el filtro para efectuar el reporte.");
			return false;
		}
		
		boolean devuelve = true;
		boolean fInicio,fFin;
		
		fInicio = (rv.getMesIni() != null && rv.getMesIni() > 0)|| (rv.getAnoIni() != null && rv.getAnoIni() > 0);
		
		if (fInicio){
			if (!(rv.getMesIni() != null && rv.getMesIni() > 0)){
				JSFUtils.addErrorMessage("Es necesario seleccionar el mes de inicio de la consulta. Si no desea establecer un periodo de inicio puede dejar los combos \"mes\" y \"año\" con los valores por defecto (\"mes\" y \"año\" respectivamente).");
				devuelve = false;
			}
			if (!(rv.getAnoIni() != null && rv.getAnoIni() > 0)){
				JSFUtils.addErrorMessage("Es necesario seleccionar el mes de inicio de la consulta. Si no desea establecer un periodo de inicio puede dejar los combos \"mes\" y \"año\" con los valores por defecto (\"mes\" y \"año\" respectivamente).");
				devuelve = false;
			}
			int anio = GregorianCalendar.getInstance().get(Calendar.YEAR);
			int mes = GregorianCalendar.getInstance().get(Calendar.MONTH);
			
			if (anio < rv.getAnoIni() || (anio == rv.getAnoIni() && mes < rv.getMesIni())){
				JSFUtils.addErrorMessage("Recuerde que el periodo de inicio no puede ser superior al mes actual.");
				devuelve = false;
			}
		}
		
		fFin = (rv.getMesFin() != null && rv.getMesFin() > 0)|| (rv.getAnoFin() != null && rv.getAnoFin() > 0);

		if (fFin){
			if (!(rv.getMesFin() != null && rv.getMesFin() > 0)){
				JSFUtils.addErrorMessage("Es necesario seleccionar el mes de inicio de la consulta. Si no desea establecer un periodo de inicio puede dejar los combos \"mes\" y \"año\" con los valores por defecto (\"mes\" y \"año\" respectivamente).");
				devuelve = false;
			}
			if (!(rv.getAnoIni() != null && rv.getAnoIni() > 0)){
				JSFUtils.addErrorMessage("Es necesario seleccionar el mes seleccionar el mes de inicio de la consulta. Si no desea establecer un periodo de inicio puede dejar los combos \"mes\" y \"año\" con los valores por defecto (\"mes\" y \"año\" respectivamente).");
				devuelve = false;
			}
		}
		
		
		
		
		
		return devuelve;
	}

}
